package com.hy.day;

import java.util.Arrays;

/**
 * Created With IntelliJ IDEA.
 * Descriptions:2028. 找出缺失的观测数据
 * <p>
 * User:Mr.Du
 * Date:2024/5/27
 * Time:14:56
 */
public class MissingRolls {

    /**
     * 找出缺失的观测数据
     *
     * @param rolls 给定的骰子结果数组。
     * @param mean 骰子的平均值，假定为1到6之间的整数。
     * @param n 缺失的骰子数量。
     * @return 一个整型数组，表示缺失的骰子结果。如果无法计算出合理结果，则返回空数组。
     */
    public int[] missingRolls(int[] rolls, int mean, int n) {
        int[] res = new int[n]; // 初始化长度为n的结果数组
        int l = rolls.length + n, x = 0, sum = l * mean; // 计算总骰子数和预期总点数
        for(int i : rolls) x += i; // 计算给定骰子结果的总和
        sum -= x; // 从预期总点数中减去已有骰子的结果点数
        // 如果剩余点数过多或过少，无法分配给缺失的骰子，则返回空数组
        if(sum > 6 * n || sum < n) return new int[]{};
        Arrays.fill(res, sum / n); // 将剩余点数平均分配到缺失的骰子中
        int ids = 0;
        sum %= n; // 计算无法平均分配的剩余点数
        // 将剩余点数分配到结果数组中的骰子上
        while(sum > 0){
            res[ids++]++;
            sum--;
        }
        return res; // 返回计算得到的缺失骰子结果数组
    }

}
